// -*- IDL -*-
// ===================================================================
/**
 *  @file   test.idl
 *
 *  Simple IDL file to test portable interceptor support.
 *
 *  @author Nanbor Wang <nanbor@cs.wustl.edu>
 *  @author Ossama Othman <ossama@dre.vanderbilt.edu>
 */
// ===================================================================

module Test_Interceptors
{
  exception Silly {};

  /**
   * @class Visual
   *
   * @brief Test interface for checking interceptor visually.
   *
   * Test interface for checking interceptor visually.
   */
  interface Visual
  {
    /**
     * @class VarLenStruct
     *
     * @brief Variable length structure
     *
     * This structure is designed to exercise memory management in the
     * @c PortableInterceptor::RequestInfo::result() method.
     */
    struct VarLenStruct
    {
      octet  flag;
      string message;
    };

    /// Normal operation.
    void normal (in long arg, out string msg);

    /// Normal operation with a return val.
    long calculate (in long one, in long two);

    readonly attribute VarLenStruct the_structure;

    /// Throws a user exception.
    void user () raises (Silly);

    /// Throws a system exception.
    void system ();

    /// Shutdown the ORB.
    oneway void shutdown ();
  };
};
